home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 7: Sunsite / Linux Cubed Series 7 - Sunsite Vol 1.iso / system / linux-bo / etherboo.000 / etherboo / etherboot-2.0 / netboot-freebsd / size86.c < prev    next >
C/C++ Source or Header  |  1996-02-14  |  867b  |  53 lines

  1. #include    <stdio.h>
  2. #include    "a.out.h"
  3.  
  4. int    didheading = 0;
  5.  
  6. void size(filename)
  7.     char    *filename;
  8. {
  9.     FILE    *f;
  10.     struct exec    ex;
  11.     long    total;
  12.  
  13.     if ((f = fopen(filename, "r")) == NULL)
  14.     {
  15.         perror(filename);
  16.         return;
  17.     }
  18.     if (fread(&ex, sizeof(ex), 1, f) != 1)
  19.     {
  20.         fprintf(stderr, "%s: Cannot read header\n", filename);
  21.         fclose(f);
  22.         return;
  23.     }
  24.     if (BADMAG(ex))
  25.     {
  26.         fprintf(stderr, "%s: Not an a.out file\n", filename);
  27.         fclose(f);
  28.         return;
  29.     }
  30.     total = ex.a_text + ex.a_data + ex.a_bss;
  31.     if (!didheading)
  32.     {
  33.         printf("text\tdata\tbss\tdec\thex\tfilename\n");
  34.         didheading = 1;
  35.     }
  36.     printf("%-ld\t%-ld\t%-ld\t%-ld\t%-lx\t%s\n",
  37.         ex.a_text, ex.a_data, ex.a_bss, total, total,    
  38.         filename);
  39.     fclose(f);
  40. }
  41.  
  42. int main(argc, argv)
  43.     int    argc;
  44.     char    **argv;
  45. {
  46.     if (argc < 2)
  47.         size("a.out");
  48.     else
  49.         for (--argc, ++argv; argc > 0; --argc, ++argv)
  50.             size(*argv);
  51.     exit(0);
  52. }
  53.